
package main.old.new_2023.last.month_8;


/**
 * @Description: todo 605. 种花问题
 * 假设有一个很长的花坛，一部分地块种植了花，另一部分却没有。可是，花不能种植在相邻的地块上，它们会争夺水源，两者都会死去。
 * 给你一个整数数组 flowerbed 表示花坛，由若干 0 和 1 组成，其中 0 表示没种植花，1 表示种植了花。
 * 另有一个数 n ，能否在不打破种植规则的情况下种入 n 朵花？能则返回 true ，不能则返回 false 。
 *
 *
 * @Author: Take-off
 * @Date: 1:00 PM 2023/6/
 * @Param:
 * @return:
 **/
public class Solution0830 {

    //种花问题
    public boolean canPlaceFlowers(int[] flowerbed, int n) {
        int count = 0;
        int m = flowerbed.length;
        int prev = -1;
        for (int i = 0; i < m; i++) {
            if (flowerbed[i] == 1) {
                //计算开头和中间的 0
                if (prev <0){
                    //开头
                    count += i/2;
                }else {
                    //中间
                    count += (i-prev -2)/2;
                }
                prev = i;
            }
        }
        //计算屁股后面这些 0
        if (prev < 0){
            //全是
            count = (flowerbed.length +1) /2 ;
        }else {
            count = (flowerbed.length - prev-1)/2 ;
        }

        return count >= n;
    }

}
